const schedule = require("node-schedule");

/**
 * 定时任务基础类
 */
class BaseTaskScheduler {
	// CRON表达式
	pattern = "";
	// 用于存储定时任务的数组
	jobs = [];
	constructor() {
		this.jobs = [];
	}

	/**
	 * 创建任务
	 * @param {*} pattern
	 * @param {*} task
	 * @returns
	 */
    createJob(pattern, task, { initExecute } = {}) {
        const job = schedule.scheduleJob(pattern, task);
        this.jobs.push(job); // 将任务添加到数组中以便管理
        if (initExecute) {
            task && task();
        }
		return job; // 返回任务对象以便进行进一步操作（如取消任务）
	}

	// 取消所有定时任务
	cancelAllJobs() {
		this.jobs.forEach(job => job.cancel());
		this.jobs = []; // 清空任务数组
	}
}

module.exports = BaseTaskScheduler;
